package com.n5x.service;

import com.n5x.model.goods.*;

import java.util.List;

/**
 * Created by Administrator on 2017/9/22.
 */
public interface IGoodsService {


    //******************************************商品类型(GoodsType)*******************************************/

    List<GoodsGroup> findGoodsGroupByGoodsInfoId(String fkGoodsInfoId);

    //******************************************商品类型(GoodsType)*******************************************/

    /**
     * 保存或更新商品类型
     *
     * @param goodsType 商品类型对象
     * @return 商品类型ID
     */
    GoodsType saveGoodsType(GoodsType goodsType);

    /**
     * 查询商品类型
     *
     * @param criteria 查询条件[可选]
     * @return 商品类型列表
     */
    List<GoodsType> findGoodTypes(GoodsTypeExample.Criteria criteria);


    /**
     * 根据商品类型ID查询商品类型对象
     *
     * @param id ID
     * @return 商品类型对象
     */
    GoodsType findGoodTypes(String id);

    //******************************************商品类型(GoodsType)*******************************************/

    /**
     * 保存商品信息
     *
     * @param goodsInfo    商品信息对象
     * @param groupNames   商品关联分组名称数组
     * @param goodsTypeIds 商品类型ID数组
     * @return 保存商品ID
     */
    public GoodsInfo saveGoodsInfo(GoodsInfo goodsInfo, Enum<GoodsGroup.GoodsTypeGroupName>[] groupNames, String[] goodsTypeIds);

    /**
     * 查询商品信息
     *
     * @param goodsInfoCriteria  商品信息查询条件[可选]
     * @param goodsGroupCriteria 商品分组查询条件[可选]
     * @param goodsTypeCriteria  商品类型查询条件[可选]
     * @return 商品信息列表
     */
    //GoodsInfo
    public List<GoodsInfo> findGoodsInfo(GoodsInfoExample.Criteria goodsInfoCriteria, GoodsGroupExample.Criteria goodsGroupCriteria, GoodsTypeExample.Criteria goodsTypeCriteria);

    /**
     * 查询商品信息
     *
     * @param goodsId 商品ID
     * @return 商品对象
     */
    public GoodsInfo findGoodsInfo(String goodsId);
}
